/*
 * ImageEntity.h
 *
 *  Created on: Nov 28, 2009
 */

#ifndef IMAGEENTITY_H_
#define IMAGEENTITY_H_

#include <iostream>
using namespace std;

class ImageEntity {
private:
	int height;
	int width;
	int fileSize;
	int **vectorsR;
	int **vectorsG;
	int **vectorsB;

protected:
	/*
	 * user only can set vectors in constructor
	 */
	void setVectorsR(int **vectorsR);
	void setVectorsG(int **vectorsG);
	void setVectorsB(int **vectorsB);

public:
	ImageEntity(int width, int height, int fileSize, int **vectorsR, int **vectorsG, int **vectorsB);
	virtual ~ImageEntity();

	/**
	 * @precondition	x < vectorsR.size()
	 * 					y < vectorsR[n].size()
	 *
	 */
	int getVectorRValue(int x, int y) const;

	/**
	 * @precondition	x < vectorsG.size()
	 * 					y < vectorsG[n].size()
	 *
	 */
	int getVectorGValue(int x, int y) const;

	/**
	 * @precondition	x < vectorsB.size()
	 * 					y < vectorsB[n].size()
	 *
	 */
	int getVectorBValue(int x, int y) const;

	//	GETs AND SETs
	int getHeight();
	void setHeight(int height);

	int getWidth();
	void setWidth(int width);

	int getFileSize();
	void setFileSize(int fileSize);

	int **getVectorsR() const;
	int **getVectorsG() const;
	int **getVectorsB() const;
};

#endif /* IMAGEENTITY_H_ */
